草庐IT

Java ASN.1 编译器

全部标签

带有 2 个编译器的 C++

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭6年前。Improvethisquestion我有一个项目,我想在Ubuntu和Windows机器上编写代码。在Ubuntu上我使用gcc,在Windows上我想使用MSVC。像这样用2个不同的编译器编译相同的代码是个好主意吗?或者我会在未来遇到问题吗?谢谢。

c++ - 为什么零初始化不是 c++ 中非初始化变量的默认值?是否有强制执行它的编译器选项?

在我所知道的大多数语言中,标量类型变量默认情况下是零初始化的,如果它们没有在代码中初始化的话。为什么这不会发生在c/c++中?我能想到的唯一原因是性能,但是如果我对其进行初始化,它真的会消耗性能吗?最好有未定义的行为吗?如果我想避免未定义的行为,无论如何我都必须初始化它,那么我赢了什么?如果这可能是性能问题,以某种方式明确告诉编译器不要对变量进行零初始化会不会更容易?最后是我的问题:是否有gcc选项告诉编译器默认零初始化? 最佳答案 C++的创始原则之一是不强制开发人员为他们不使用的东西付费。如果你写类似intx;x=1;那么您不必

c++ - 我在哪里可以学习有关C++编译器的 “what I need to know”?

我刚刚开始探索C++,因此请原谅这个问题。我也请您放心这个问题有多开放。我认为可以将其分解,但是我认为这些信息属于同一地方。(仅供引用-我现在主要使用QTSDK和mingw32-make,并且似乎已经为我的机器正确配置了它们。)我知道该语言中有很多是由编译器驱动的-我听说过预编译器指令,但是似乎有人可以编写有关不同C++编译器及其各自参数的书。另外,有些命令显然在make之前(例如,像qmake(仅在QT中是这样))。我想知道是否有任何地方可以让我大致了解那里的编译器以及它们的不同选项。我还想知道它们每个人如何查看Makefile(它们之间的语法似乎有所不同吗?)。如果没有关于“您需要

c++ - 不指定函数参数求值的确切顺序如何帮助 C 和 C++ 编译器生成优化代码?

#includeintfoo(){std::cout上述程序的输出依赖于编译器。计算函数参数的顺序未指定。我读到这个的原因是它可以产生高度优化的代码。不指定函数参数求值的确切顺序如何帮助编译器生成优化代码?据我所知,评估顺序在Java、C#、D等语言中是严格指定的。 最佳答案 我认为问题的整个前提是错误的:HownotspecifyanexactorderofevaluationoffunctionargumenthelpsC&C++compilertogenerateoptimizedcode?这与优化代码无关(尽管它确实允许这样

c++ - 有没有办法在不修改每个源文件的情况下在每个编译单元中包含一个头文件?

鉴于以下情况:包含数千个C++源文件的大型项目没有通用的头文件(没有一个头文件包含在每个源文件中)该项目使用g++编译,make管理有没有办法在不修改每个源文件以包含新头文件的情况下将定义(例如宏)包含到每个编译单元中? 最佳答案 来自mangcc:-includefileProcessfileasif"#include"file""appearedasthefirstlineoftheprimarysourcefile.However,thefirstdirectorysearchedforfileisthepreprocesso

c++ - 为什么编译器允许你在这里 "write"一个 const 变量?

为什么你可以这样欺骗编译器:constinta=5;*((int*)&a)=5;//VC/armccdoesnotcomplain当上面是这样的“删节”时:constint*ptr2const=&a;int*ptr=ptr2const;//asexpectederrorisraisedhere*ptr=5; 最佳答案 转换是您告诉编译器“我知道我在做什么”的方式,因此它不会提示。不幸的是,在这种情况下,您将调用未定义的行为。 关于c++-为什么编译器允许你在这里"write"一个cons

c++ - C++ 编译时整数变量的最小值和最大值

是否有一种简单、干净的方法可以在编译时确定某些(目前未知)整数变量或类型的变量的最大值和最小值?使用模板?例如://Somewhereinalargeprojectis:typedefunsignedlongXType;typedefcharYType;//...//SomewhereelseXTypea;YTypeb;LONGLONGc,d,e,f;c=MinOfType(a);//Sameasc=0;d=MaxOfType(a);//Sameasd=0xffffffff;e=MinOfType(b);//Samease=-128;f=MaxOfType(b);//Sameasf=1

c++ - 全新的 C(如何编译?)

我想知道我应该使用什么在C中进行编译。我对一般编程是全新的,非常感谢对这个过程的全面解释。我在WindowsVista上。我听说有一种叫做“djgpp”的东西,它是免费的,而且对windows有效。 最佳答案 要了解这个问题以及您在开始时可能遇到的许多其他问题的答案,请尝试[此网站][1],其中包含初学者教程。[这是关于编译器和设置的页面][2]。您可以使用哪些编译器的摘录:window/DOSCode::Blocks和MINGW博兰德DJGPPDev-C++和DigitalMars仅限WindowsMicrosoftVisualC

c++ - Windows 上的 C 编译器之间的实际区别是什么?

用VisualC/C++2005/2008编写的程序可能无法用其他编译器(例如GNUC/C++)编译,反之亦然。例如,当尝试重用使用windows.h的代码时,为特定编译器编写的代码与另一个编译器一起使用时,需要注意哪些区别?是否有任何关于如何生成与一个编译器或另一个编译器兼容的代码的信息,例如使用GC/C++或MSVC/C++?尝试这样做会导致什么问题?LCC和DigitalMars等其他编译器呢? 最佳答案 尝试将为MSVC编写的代码编译为其他编译器时,要做的第一件事是在关闭Microsoft扩展的情况下进行编译。(我认为使用/

c++ - gcc 编译无效的 C 代码

我的一些C程序没有按预期工作。例如,通过引用传递在C中是不可能的,但是当我编写一个使用它的C程序并使用gcc编译它时它工作正常。gcc是C++编译器吗?如何使其表现得像C编译器? 最佳答案 gcc、g++和其他前端使用文件名来确定语言。例如,gcc和g++之间唯一的主要区别是对新的C++程序员的影响:不同的链接设置(针对C++stdlib)。如果您的文件被误检测,请使用-x选项(也可能是-std)明确指定。或者遵循gcc对文件名使用的通用命名约定。对于C,这意味着*.c。仔细检查您没有使用大写/大写*.C来命名您的文件;被检测为C+